#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
GarfieltBlog(webpy) is a light weight blog system base on web.py.It is similar 
to WordPress that provides commonly functions and featurs of a blog system.

Homepage and details: http://www.iscsky.net/

Copyright (c) 2012, Garfielt <liuwt123@gmail.com>.
License: MIT (see LICENSE.txt for details)
"""

import os
import time
import string
import datetime
import json
from os.path import join, getsize

try: 
   from hashlib import md5
except ImportError:
   from md5 import md5


class dict_to_object(dict):
    def __getattr__(self, key):
        try:
            return self[key]
        except:
            return ''
    def __setattr__(self, key, value): 
        self[key] = value

def is_int(s):
    for i in s:
        if i not in "1234567890":
            return False
    return True

def isset(v): 
    try: 
        type (eval(v)) 
    except: 
        return False 
    else: 
        return True

    
def check_str(cstr):
    return filter(lambda st: st not in " '\";()<>[]", cstr)

def safe_str(cstr):
    return filter(lambda st: st in "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_ ", cstr)

def cut_str(cstr):
    pass

def timestamp():
    return time.time()

def now():
    return time.localtime()

def micro_time():
    return datetime.datetime.now()
    
def format_time(ttime = None, tformat = "%Y-%m-%d %X"):
    if not ttime: ttime = timestamp()
    return time.strftime(tformat, time.localtime(ttime))

def hash_md5(s):
    m = md5(s)
    m.digest()
    return m.hexdigest()

def is_file_exist(filepath):
    return os.path.isfile(filepath)

def dir_file(filename):
    folder = os.path.dirname(filename)
    if not os.path.exists(folder):
        os.makedirs(folder)
    return filename

def getdirsize(dir):
    size = 0L
    for root, dirs, files in os.walk(dir):
        size += sum([getsize(join(root, name)) for name in files])
    return size

def getfilesize(file):
    size = getsize(file)
    return size

def filesize(size):
    if size > 1024 * 1024:
        return "%.2fM" % (size/1024/1024)
    else: return "%.2fK" % (size/1024)

def json_data(dict):
    return json.dumps(dict)

def error(msg):
    print msg

def Pinyin(num):
    table = 'a,-20319;ai,-20317;an,-20304;ang,-20295;ao,-20292;ba,-20283;bai,-20265;ban,-20257;bang,-20242;bao,-20230;bei,-20051;ben,-20036;beng,-20032;bi,-20026;bian,-20002;biao,-19990;bie,-19986;bin,-19982;bing,-19976;bo,-19805;bu,-19784;ca,-19775;cai,-19774;can,-19763;cang,-19756;cao,-19751;ce,-19746;ceng,-19741;cha,-19739;chai,-19728;chan,-19725;chang,-19715;chao,-19540;che,-19531;chen,-19525;cheng,-19515;chi,-19500;chong,-19484;chou,-19479;chu,-19467;chuai,-19289;chuan,-19288;chuang,-19281;chui,-19275;chun,-19270;chuo,-19263;ci,-19261;cong,-19249;cou,-19243;cu,-19242;cuan,-19238;cui,-19235;cun,-19227;cuo,-19224;da,-19218;dai,-19212;dan,-19038;dang,-19023;dao,-19018;de,-19006;deng,-19003;di,-18996;dian,-18977;diao,-18961;die,-18952;ding,-18783;diu,-18774;dong,-18773;dou,-18763;du,-18756;duan,-18741;dui,-18735;dun,-18731;duo,-18722;e,-18710;en,-18697;er,-18696;fa,-18526;fan,-18518;fang,-18501;fei,-18490;fen,-18478;feng,-18463;fo,-18448;fou,-18447;fu,-18446;ga,-18239;gai,-18237;gan,-18231;gang,-18220;gao,-18211;ge,-18201;gei,-18184;gen,-18183;geng,-18181;gong,-18012;gou,-17997;gu,-17988;gua,-17970;guai,-17964;guan,-17961;guang,-17950;gui,-17947;gun,-17931;guo,-17928;ha,-17922;hai,-17759;han,-17752;hang,-17733;hao,-17730;he,-17721;hei,-17703;hen,-17701;heng,-17697;hong,-17692;hou,-17683;hu,-17676;hua,-17496;huai,-17487;huan,-17482;huang,-17468;hui,-17454;hun,-17433;huo,-17427;ji,-17417;jia,-17202;jian,-17185;jiang,-16983;jiao,-16970;jie,-16942;jin,-16915;jing,-16733;jiong,-16708;jiu,-16706;ju,-16689;juan,-16664;jue,-16657;jun,-16647;ka,-16474;kai,-16470;kan,-16465;kang,-16459;kao,-16452;ke,-16448;ken,-16433;keng,-16429;kong,-16427;kou,-16423;ku,-16419;kua,-16412;kuai,-16407;kuan,-16403;kuang,-16401;kui,-16393;kun,-16220;kuo,-16216;la,-16212;lai,-16205;lan,-16202;lang,-16187;lao,-16180;le,-16171;lei,-16169;leng,-16158;li,-16155;lia,-15959;lian,-15958;liang,-15944;liao,-15933;lie,-15920;lin,-15915;ling,-15903;liu,-15889;long,-15878;lou,-15707;lu,-15701;lv,-15681;luan,-15667;lue,-15661;lun,-15659;luo,-15652;ma,-15640;mai,-15631;man,-15625;mang,-15454;mao,-15448;me,-15436;mei,-15435;men,-15419;meng,-15416;mi,-15408;mian,-15394;miao,-15385;mie,-15377;min,-15375;ming,-15369;miu,-15363;mo,-15362;mou,-15183;mu,-15180;na,-15165;nai,-15158;nan,-15153;nang,-15150;nao,-15149;ne,-15144;nei,-15143;nen,-15141;neng,-15140;ni,-15139;nian,-15128;niang,-15121;niao,-15119;nie,-15117;nin,-15110;ning,-15109;niu,-14941;nong,-14937;nu,-14933;nv,-14930;nuan,-14929;nue,-14928;nuo,-14926;o,-14922;ou,-14921;pa,-14914;pai,-14908;pan,-14902;pang,-14894;pao,-14889;pei,-14882;pen,-14873;peng,-14871;pi,-14857;pian,-14678;piao,-14674;pie,-14670;pin,-14668;ping,-14663;po,-14654;pu,-14645;qi,-14630;qia,-14594;qian,-14429;qiang,-14407;qiao,-14399;qie,-14384;qin,-14379;qing,-14368;qiong,-14355;qiu,-14353;qu,-14345;quan,-14170;que,-14159;qun,-14151;ran,-14149;rang,-14145;rao,-14140;re,-14137;ren,-14135;reng,-14125;ri,-14123;rong,-14122;rou,-14112;ru,-14109;ruan,-14099;rui,-14097;run,-14094;ruo,-14092;sa,-14090;sai,-14087;san,-14083;sang,-13917;sao,-13914;se,-13910;sen,-13907;seng,-13906;sha,-13905;shai,-13896;shan,-13894;shang,-13878;shao,-13870;she,-13859;shen,-13847;sheng,-13831;shi,-13658;shou,-13611;shu,-13601;shua,-13406;shuai,-13404;shuan,-13400;shuang,-13398;shui,-13395;shun,-13391;shuo,-13387;si,-13383;song,-13367;sou,-13359;su,-13356;suan,-13343;sui,-13340;sun,-13329;suo,-13326;ta,-13318;tai,-13147;tan,-13138;tang,-13120;tao,-13107;te,-13096;teng,-13095;ti,-13091;tian,-13076;tiao,-13068;tie,-13063;ting,-13060;tong,-12888;tou,-12875;tu,-12871;tuan,-12860;tui,-12858;tun,-12852;tuo,-12849;wa,-12838;wai,-12831;wan,-12829;wang,-12812;wei,-12802;wen,-12607;weng,-12597;wo,-12594;wu,-12585;xi,-12556;xia,-12359;xian,-12346;xiang,-12320;xiao,-12300;xie,-12120;xin,-12099;xing,-12089;xiong,-12074;xiu,-12067;xu,-12058;xuan,-12039;xue,-11867;xun,-11861;ya,-11847;yan,-11831;yang,-11798;yao,-11781;ye,-11604;yi,-11589;yin,-11536;ying,-11358;yo,-11340;yong,-11339;you,-11324;yu,-11303;yuan,-11097;yue,-11077;yun,-11067;za,-11055;zai,-11052;zan,-11045;zang,-11041;zao,-11038;ze,-11024;zei,-11020;zen,-11019;zeng,-11018;zha,-11014;zhai,-10838;zhan,-10832;zhang,-10815;zhao,-10800;zhe,-10790;zhen,-10780;zheng,-10764;zhi,-10587;zhong,-10544;zhou,-10533;zhu,-10519;zhua,-10331;zhuai,-10329;zhuan,-10328;zhuang,-10322;zhui,-10315;zhun,-10309;zhuo,-10307;zi,-10296;zong,-10281;zou,-10274;zu,-10270;zuan,-10262;zui,-10260;zun,-10256;zuo,-10254'
    if num>0 & num<160:
        return chr(num)
    v=table.split(';')
    for i in xrange(len(v)-1,-1,-1):
        s=v[i].split(',')
        if int(s[1])<=num:
            return s[0]
            break
    
def Pytrans(stitle):
    stitle = stitle.encode("gbk")
    i=0
    text = []
    tnum = ''
    while(i < len(stitle)):
        p = ord(stitle[i:i+1])
        if(p>160):
            if tnum <> '':
                text.append(tnum)
                tnum = ''
            i += 1
            q = ord(stitle[i:i+1])
            p = p*256+q-65536
            ts = Pinyin(p)
            if ts:
                text.append(ts)
        elif 47<p<58 or 64<p<91 or 96<p<123:
            tnum += stitle[i:i+1]
        i += 1
    if tnum <> '':
        text.append(tnum)
    return string.join(text, ' ')



if __name__ == "__main__":
    print format_time()